Node.js GraphQL

GraphQL APIகளை உருவாக்கி நிர்வகிக்க கற்றுக்கொள்ளுங்கள்

GraphQL என்றால் என்ன?

GraphQL என்பது APIகளுக்கான ஒரு வினா மொழி மற்றும் உங்கள் தரவுக்கு எதிராக அந்த வினாக்களை இயக்குவதற்கான ஒரு இயக்கநேரம் ஆகும். இது 2012 இல் Facebook மூலம் உருவாக்கப்பட்டு 2015 இல் பொதுவாக வெளியிடப்பட்டது.

முக்கிய அம்சங்கள்

கிளையன்ட்-குறிப்பிடப்பட்ட வினாக்கள்: உங்களுக்குத் தேவையானதை சரியாகக் கோருங்கள், அதிகமாக எதுவும் இல்லை
ஒற்றை முனையம்: ஒரு முனையம் மூலம் அனைத்து வளங்களையும் அணுகவும்
வலுவான வகைப்படுத்தல்: தெளிவான திட்டம் கிடைக்கக்கூடிய தரவு மற்றும் செயல்பாடுகளை வரையறுக்கிறது
படிநிலை: வினாக்கள் உங்கள் தரவின் வடிவத்துடன் பொருந்தும்
சுய-ஆவணமாக்கல்: திட்டம் ஆவணமாக செயல்படுகிறது

💡 குறிப்பு:

REST இலிருந்து வேறுபட்டு, GraphQL கிளையன்ட்கள் தங்களுக்கு தேவையான தரவை சரியாகக் குறிப்பிட அனுமதிக்கிறது, தரவின் அதிகமான பிரித்தெடுத்தல் மற்றும் குறைவான பிரித்தெடுத்தல் ஆகியவற்றைக் குறைக்கிறது.

Node.js இல் GraphQL உடன் தொடங்குதல்

முன்நிபந்தனைகள்

படி 1: புதிய திட்டத்தை அமைக்கவும்

ஒரு புதிய கோப்புறையை உருவாக்கி Node.js திட்டத்தைத் தொடங்கவும்:

mkdir graphql-server
cd graphql-server
npm init -y

படி 2: தேவையான தொகுப்புகளை நிறுவவும்

தேவையான சார்புகளை நிறுவவும்:

npm install express express-graphql graphql

இது நிறுவுகிறது:

படி 3: அடிப்படை GraphQL சேவையகத்தை உருவாக்கவும்

3.1 உங்கள் தரவு மாதிரியை வரையறுக்கவும்

ஒரு புதிய கோப்பை server.js உருவாக்கி GraphQL இன் Schema Definition Language (SDL) ஐப் பயன்படுத்தி உங்கள் தரவு மாதிரியை வரையறுக்கத் தொடங்கவும்:

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');

// மாதிரி தரவு
const books = [
  {
    id: '1',
    title: 'The Great Gatsby',
    author: 'F. Scott Fitzgerald',
    year: 1925,
    genre: 'Novel'
  },
  {
    id: '2',
    title: 'To Kill a Mockingbird',
    author: 'Harper Lee',
    year: 1960,
    genre: 'Southern Gothic'
  }
];

3.2 GraphQL திட்டத்தை வரையறுக்கவும்

திட்ட வரையறையை உங்கள் server.js கோப்பில் சேர்க்கவும்:

// GraphQL திட்ட மொழியைப் பயன்படுத்தி திட்டத்தை வரையறுக்கவும்
const schema = buildSchema(`
  # ஒரு புத்தகத்திற்கு தலைப்பு, ஆசிரியர் மற்றும் வெளியீட்டு ஆண்டு உள்ளது
  type Book {
    id: ID!
    title: String!
    author: String!
    year: Int
    genre: String
  }

  # "Query" வகை அனைத்து GraphQL வினாக்களின் மூலமாகும்
  type Query {
    # அனைத்து புத்தகங்களையும் பெறவும்
    books: [Book!]!
    # ID மூலம் ஒரு குறிப்பிட்ட புத்தகத்தைப் பெறவும்
    book(id: ID!): Book
    # தலைப்பு அல்லது ஆசிரியர் மூலம் புத்தகங்களைத் தேடவும்
    searchBooks(query: String!): [Book!]!
  }
`);

3.3 Resolvers ஐச் செயல்படுத்தவும்

உண்மையான தரவைப் பெற resolver செயல்பாடுகளைச் சேர்க்கவும்:

// திட்ட புலங்களுக்கான resolvers ஐ வரையறுக்கவும்
const root = {
  // அனைத்து புத்தகங்களையும் பெறுவதற்கான resolver
  books: () => books,
  
  // ID மூலம் ஒரு ஒற்றை புத்தகத்தைப் பெறுவதற்கான resolver
  book: ({ id }) => books.find(book => book.id === id),
  
  // புத்தகங்களைத் தேடுவதற்கான resolver
  searchBooks: ({ query }) => {
    const searchTerm = query.toLowerCase();
    return books.filter(
      book =>
        book.title.toLowerCase().includes(searchTerm) ||
        book.author.toLowerCase().includes(searchTerm)
    );
  }
};

3.4 Express சேவையகத்தை அமைக்கவும்

சேவையக அமைப்பை முடிக்கவும்:

// ஒரு Express பயன்பாட்டை உருவாக்கவும்
const app = express();

// GraphQL முனையத்தை அமைக்கவும்
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  // சோதனைக்காக GraphiQL இடைமுகத்தை இயக்கவும்
  graphiql: true,
}));

// சேவையகத்தைத் தொடங்கவும்
const PORT = 4000;
app.listen(PORT, () => {
  console.log(`Server running at http://localhost:${PORT}/graphql`);
});

படி 4: உங்கள் GraphQL சேவையகத்தை இயக்கவும் மற்றும் சோதிக்கவும்

4.1 சேவையகத்தைத் தொடங்கவும்

Node.js உடன் உங்கள் சேவையகத்தை இயக்கவும்:

node server.js

நீங்கள் செய்தியைக் காண வேண்டும்: Server running at http://localhost:4000/graphql

4.2 GraphiQL உடன் சோதிக்கவும்

உங்கள் உலாவியைத் திறந்து GraphiQL இடைமுகத்தை அணுக http://localhost:4000/graphql க்குச் செல்லவும்.

எடுத்துக்காட்டு வினா: அனைத்து புத்தகங்களையும் பெறவும்

{
  books {
    id
    title
    author
    year
  }
}

எடுத்துக்காட்டு வினா: ஒரு ஒற்றை புத்தகத்தைப் பெறவும்

{
  book(id: "1") {
    title
    author
    genre
  }
}

எடுத்துக்காட்டு வினா: புத்தகங்களைத் தேடவும்

{
  searchBooks(query: "Gatsby") {
    title
    author
    year
  }
}

GraphQL திட்டங்கள் மற்றும் வகைகள்

GraphQL திட்டங்கள் உங்கள் API இன் கட்டமைப்பை மற்றும் கோரப்படக்கூடிய தரவின் வகைகளை வரையறுக்கின்றன.

வகை அமைப்பு

GraphQL உங்கள் தரவின் வடிவத்தை வரையறுக்க ஒரு வகை அமைப்பைப் பயன்படுத்துகிறது. அடிப்படை அளவிடல் வகைகள் இங்கே:

வகை விளக்கம் எடுத்துக்காட்டு
Int கையொப்பமிடப்பட்ட 32-பிட் முழு எண் 42
Float கையொப்பமிடப்பட்ட இரட்டை-துல்லியமான மிதவை-புள்ளி மதிப்பு 3.14
String UTF-8 எழுத்து வரிசை "Hello, GraphQL!"
Boolean true அல்லது false true, false
ID தனித்துவமான அடையாளங்காட்டி, ஒரு String ஆக தொடர்முறைப்படுத்தப்பட்டது "5f8a8d8e8f8c8d8b8a8e8f8c"

பயிற்சி

GraphQL கிளையன்ட்கள் தங்களுக்குத் தேவையானதை ______ கோர அனுமதிக்கிறது மற்றும் அதிகமாக எதுவும் இல்லை.

குறைவாக
✗ தவறு! GraphQL கிளையன்ட்கள் தங்களுக்குத் தேவையானதை சரியாகக் கோர அனுமதிக்கிறது, குறைவாக அல்ல
அனைத்தையும்
✗ தவறு! GraphQL கிளையன்ட்கள் அனைத்து தரவையும் கோர அனுமதிப்பதில்லை, தங்களுக்குத் தேவையானதை மட்டுமே
சரியாக
✓ சரி! GraphQL கிளையன்ட்கள் தங்களுக்குத் தேவையான தரவை சரியாகக் கோர அனுமதிக்கிறது, இது தரவின் அதிகமான பிரித்தெடுத்தல் மற்றும் குறைவான பிரித்தெடுத்தல் ஆகியவற்றைக் குறைக்கிறது
தானாக
✗ தவறு! GraphQL கிளையன்ட்கள் தானாகவே தரவைக் கோருவதில்லை, அவர்கள் சரியாக என்ன தேவை என்பதைக் குறிப்பிட வேண்டும்